/*
 * @Description: 构造器属性
 * @Author: zzj
 * @Date: 2021-09-02 14:54:40
 * @LastEditors: zzj
 * @LastEditTime: 2021-09-02 15:13:52
 */

//构造器属性
/*在对象中，我们可能会设置一些比较奇怪的属性_name，这种属性我们称之为构造器属性
这种属性我们不希望直接去通过外部访问  obj_num
希望自己去控制这个属性的访问逻辑 obj.num可以访问到 然后对他进行一些逻辑改变
*/
var obj = {
    _num:0
}
//obj_num 可以访问到，返回 -> 数字：0
//构造器属性：可以重写自定义属性set和get方法
//当我们没有设置这两个属性时，默认是隐式调用；如果设置了，会调用设置的方法
Object.defineProperty(obj,"num",{
    set(num){
        this._num = num
    },  //在num的值被设置时，调用
    get(){
        return "数字：" + this._num
    }   //在num的值被获取时，调用
})

console.log(obj.num);
obj.num = 5;
console.log(obj.num);